home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-12-08 | 37.9 KB | 956 lines | [TEXT/R*ch] |
- C.S.M.P. Digest Thu, 04 Feb 93 Volume 2 : Issue 8
-
- Today's Topics:
-
- PPC Sessions, or Any ports in this storm?
- Gestalt Selectors in APPL
- One binary for all Macs (even 128K)
- Advice needed
-
-
-
- The Comp.Sys.Mac.Programmer Digest is moderated by Michael A. Kelly.
-
- The digest is a collection of article threads from the internet newsgroup
- comp.sys.mac.programmer. It is designed for people who read c.s.m.p. semi-
- regularly and want an archive of the discussions. If you don't know what a
- newsgroup is, you probably don't have access to it. Ask your systems
- administrator(s) for details. If you don't have access to news, there is
- no way that I know of for you to post articles to the group.
-
- Each issue of the digest contains one or more sets of articles (called
- threads), with each set corresponding to a 'discussion' of a particular
- subject. The articles are not edited; all articles included in this digest
- are in their original posted form (as received by our news server at
- cs.uoregon.edu). Article threads are not added to the digest until the last
- article added to the thread is at least one month old (this is to ensure that
- the thread is dead before adding it to the digest). Article threads that
- consist of only one message are generally not included in the digest.
-
- The entire digest is available for anonymous ftp from ftp.cs.uoregon.edu
- [128.223.8.8] in the directory /pub/mac/csmp-digest. Be sure to read the
- file /pub/mac/csmp-digest/README before downloading any files. The most
- recent issues are available from sumex-aim.stanford.edu [36.44.0.6] in the
- directory /info-mac/digest/csmp. If you don't have ftp capability, the sumex
- archive has a mail server; send a message with the text '$MACarch help' (no
- quotes) to LISTSERV@ricevm1.rice.edu for more information.
-
- The digest is also available via email. Just send a note saying that you
- want to be on the digest mailing list to mkelly@cs.uoregon.edu, and you will
- automatically receive each new issue as it is created. Sorry, back issues
- are not available through the mailing list.
-
- Send administrative mail to mkelly@cs.uoregon.edu.
-
-
- -------------------------------------------------------
-
- From: kempkec@mist.CS.ORST.EDU (Christopher Kempke)
- Subject: PPC Sessions, or Any ports in this storm?
- Date: 14 Dec 92 12:24:42 GMT
- Organization: Oregon State University, Computer Science Dept.
-
-
- First a simple question: Can I assume that PPC Session reference numbers
- are unique to a running application? This isn't explicitly stated, but
- I'm almost sure it's true. Will my application crash and burn in system
- 11.3 if I rely on this now?
-
- Here's the scoop on why I want to know. I'm writing some code that uses
- (potentially) several PPCPorts. However, these ports share a common
- completion routine for sends, as well as receives, informs, etc.
-
- Now, in the completion routine I need to know what port the send or
- receive request originated from in order to know what to do with some
- statistics data about the transfer. No problem, both PPCSEND and PPCRECEIVE
- include a userdata parameter for passing information to the completion
- routines.
-
- BZZZZT. Wrong answer, take another number and try again. They
- actually deliver the userdata to the OTHER process involved in the
- transaction, where it does me no good at all.
-
- Worse, the ReadParam and WriteParam (why the name change from send/receive
- to write/read, guys?) don't include the port reference number. The
- only thing I can consistently get is the session reference number, and
- of course there's two big problems with that: a) it's not documented to
- be unique, so I can't necessarily map it back to the port number, and
- b) there's no obvious way to convert them, short of building a table myself
- as I open the sessions, and c) the session reference number is not even
- listed as being a readable value in the completion procedure, so potentially
- in a later system it could be corrupted or overwritten by the time it reaches
- the completion routine.
-
- Is there really no way to do this? I _can't_ be the only person who
- needs to send data from the application to its own completion routines.
- Can I?
- I can't easily use global variables, because there are a (potentially)
- unlimited number of open ports and pending transactions.
-
- This seems like something that people would need to be able to do fairly
- often; what am I missing? (I'd be happy to look stupid just to get this
- code finished :-))
-
- --Chris
-
- +++++++++++++++++++++++++++
-
- From: ldo@waikato.ac.nz (Lawrence D'Oliveiro, Waikato University)
- Date: 16 Dec 92 04:21:27 GMT
- Organization: University of Waikato, Hamilton, New Zealand
-
- In article <1ghueaINNnuf@flop.ENGR.ORST.EDU>, kempkec@mist.CS.ORST.EDU (Christopher Kempke) writes:
- >
- > First a simple question: Can I assume that PPC Session reference numbers
- > are unique to a running application?
-
- I think that session and port numbers are unique systemwide, not just to an
- application. I've been doing some messing about with PPC from HyperCard,
- and several times I've made some mistake in a script, tried quitting HyperCard
- and going back in, and failed to open my port because it was already open.
-
- Remember the PPC Toolbox can be used from interrupt level and INIT code, not
- necessarily by an application. I don't think it knows anything about
- application contexts; that knowledge belongs to higher layers, like the
- High-Level Event and AppleEvent Managers.
-
- > Worse, the ReadParam and WriteParam (why the name change from send/receive
- > to write/read, guys?) don't include the port reference number. The
- > only thing I can consistently get is the session reference number, and
- > of course there's two big problems with that: a) it's not documented to
- > be unique, so I can't necessarily map it back to the port number, and
- > b) there's no obvious way to convert them, short of building a table myself
- > as I open the sessions, and c) the session reference number is not even
- > listed as being a readable value in the completion procedure, so potentially
- > in a later system it could be corrupted or overwritten by the time it reaches
- > the completion routine.
-
- I haven't heard of any cases where the system altered a field where there
- was only a right-arrow next to its description. I trust this is still true
- with the PPC Toolbox. (He said with a straight face.)
-
- > Is there really no way to do this? I _can't_ be the only person who
- > needs to send data from the application to its own completion routines.
- > Can I?
-
- One common technique is to make the PPC parameter block part of a larger
- structure that you know about. You can put whatever information you like in
- the fields following it.
-
- There's another technique I like to use (because it also works in more
- difficult situations), but it involves generating code at run-time, which
- upsets some squeamish types. :-)
-
- Lawrence D'Oliveiro fone: +64-7-856-2889
- Computer Services Dept fax: +64-7-838-4066
- University of Waikato electric mail: ldo@waikato.ac.nz
- Hamilton, New Zealand 37^ 47' 26" S, 175^ 19' 7" E, GMT+13:00
-
- ---------------------------
-
- From: zobkiw@world.std.com (Joe Zobkiw)
- Subject: Gestalt Selectors in APPL
- Organization: The World Public Access UNIX, Brookline, MA
- Date: Wed, 23 Dec 1992 20:40:12 GMT
-
- I need an application to install a gestalt selector.
- I know I need to load it into the System Heap but I
- have a few questions and comments.
-
- 1) Can I perform a "6-byte-xdef" type trick on this
- code? I'm not sure I can since even if I mark the
- 6-byte resource as sysHeap the code it points to is
- still in my application heap.
-
- 2) If I place my Gestalt selector function in a separate
- CODE resource, can I mark that resource as sysHeap and
- have it work properly? This would be WITHOUT any 6-byte
- tricks.
-
- 3) How can I remove the Gestalt selector once the app
- quits? Will
-
- err = ReplaceGestalt(selector, nil, &oldGestaltFunction);
-
- work or will this cause the System to jump to location 0
- the next time someone calls my selector?
-
- What's the easiest way? Thanks in advance! :)
-
- Joe Zobkiw
-
- - --
- - -------------------------------------------------------------
- joe zobkiw zobkiw@world.std.com aol: aflzobkiw
-
- macintosh.midi.synthesis.c.oop.asm.communications.graphics...
-
- +++++++++++++++++++++++++++
-
- From: grobbins@Apple.COM (Grobbins)
- Date: 24 Dec 92 06:19:14 GMT
- Organization: Experimental System Software Investigations
-
- In article <BzqC31.FAM@world.std.com> zobkiw@world.std.com (Joe Zobkiw) writes:
- >1) Can I perform a "6-byte-xdef" type trick on this
- >code? I'm not sure I can since even if I mark the
- >6-byte resource as sysHeap the code it points to is
- >still in my application heap.
-
- It should work so long as the application is running, but since the
- application may quit and there is no way to remove a gestalt selector,
- you will need at least one totally stand-alone block of code. So the
- 6-byte trick won't solve this problem.
-
- (This limitation doesn't apply to things like time manager tasks; since
- they can be removed, it is appropriate to simply make the task code a
- function of the application, or to put an initial jump instruction in
- the system heap, and remove the task before the app quits.)
-
- You can copy a function from the application into a block in the
- system heap. If the function were called MySelectorFunction and
- it were followed by a procedure called NullProc, then this would
- work:
-
- mySelectorFunctionSize := Ord4(@NullProc) - Ord4(@MySelectorFunction);
- { mySelectorFunctionSize should be something reasonable, definitely >0 }
-
- { make space in the system heap }
- mySelectorFunctionPtr := NewPtrSys(mySelectorFunctionSize);
- IF mySelectorFunctionPtr <> NIL THEN
- BEGIN
- { copy the function into the system heap }
- BlockMove(@MySelectorFunction, mySelectorFunctionPtr,
- mySelectorFunctionSize);
- retCode := NewGestalt(kMySelector, mySelectorFunctionPtr);
- END;
-
- This is more fragile than just compiling a stand-alone code resource
- (on which you'd call set the SysHeap bit, call GetResource, DetachResource,
- HLock; see IM VI 3-43) since the BlockMove method makes the assumption
- that the functions in the compiled code are in the same relative order
- in memory as they are in the source file. Check the compiler output
- with a disassembler (like ResEdit's code viewer) to make certain that
- functions are sequential as expected in the final application code.
-
-
- >2) If I place my Gestalt selector function in a separate
- >CODE resource, can I mark that resource as sysHeap and
- >have it work properly? This would be WITHOUT any 6-byte
- >tricks.
-
- Yep, that's the canonical way. Be sure it's locked in memory before
- installation, too.
-
- >3) How can I remove the Gestalt selector once the app
- >quits? Will
- > err = ReplaceGestalt(selector, nil, &oldGestaltFunction);
- >work or will this cause the System to jump to location 0
- >the next time someone calls my selector?
- >What's the easiest way? Thanks in advance! :)
-
- Rather than try to remove the selector, just make a simple replacement
- selector function that returns zero or something else distinct and
- strand it in the System heap.
-
-
- Grobbins grobbins@apple.com
-
- Usual disclaimers apply.
-
- +++++++++++++++++++++++++++
-
- From: radcliff@apple.com (Dave Radcliffe)
- Date: 31 Dec 92 22:30:51 GMT
- Organization: Apple Computer
-
- In article <BzqC31.FAM@world.std.com>, zobkiw@world.std.com (Joe Zobkiw) writes:
- >
- > I need an application to install a gestalt selector.
- > I know I need to load it into the System Heap but I
- > have a few questions and comments.
- >
- > 1) Can I perform a "6-byte-xdef" type trick on this
- > code? I'm not sure I can since even if I mark the
- > 6-byte resource as sysHeap the code it points to is
- > still in my application heap.
- >
- > 2) If I place my Gestalt selector function in a separate
- > CODE resource, can I mark that resource as sysHeap and
- > have it work properly? This would be WITHOUT any 6-byte
- > tricks.
- >
- > 3) How can I remove the Gestalt selector once the app
- > quits? Will
- >
- > err = ReplaceGestalt(selector, nil, &oldGestaltFunction);
- >
- > work or will this cause the System to jump to location 0
- > the next time someone calls my selector?
- >
- > What's the easiest way? Thanks in advance! :)
- >
- > Joe Zobkiw
-
- There is glue code on the January Developer CD that, assuming all you want your
- Gestalt function to do is return a value, solves all your problems. It is
- called GestaltValue. The ReadMe file is pasted below:
-
- GestaltValue Read Me
- ) Copyright 1992 Apple Computer, Inc.
- All rights reserved
- - ------------------------------------
- This document describes the GestaltValue functionality as implemented in
- GestaltValue.o. Interfaces to GestaltValue are provided in
- GestaltValue.h and GestaltValue.p.
-
- GestaltValue is a set of routines, implemented as glue, that extend and
- enhance existing Gestalt functionality. For a complete description of
- Gestalt, refer to Chapter 3 of Inside Macintosh VI.
-
- Rationale
-
- Existing Gestalt functionality allows developers to put Gestalt to use in
- their own applications by registering a Gestalt selector using the
- NewGestalt or ReplaceGestalt calls, and providing a function which can
- return the appropriate response.
-
- While this is a powerful feature of Gestalt, in practice, it is difficult
- to take advantage of for a number of reasons:
-
- 1) The supplied function must entirely reside in the system heap.
-
- 2) The function should be reentrant and not move memory because Gestalt
- (and therefore the function) may be called at interrupt time.
-
- 3) The function must effectively remain resident until restart. This is
- a problem for applications which may come and go multiple times.
-
- 4) Since the purpose of the function is to return a response value, the
- function must know how to locate, or otherwise manage that value.
-
- All of this means a lot of work just to allow code to retrieve the response
- value via Gestalt.
-
- GestaltValue addresses all these issues. It is built to deal with the most
- common case, simply returning a 32-bit value. It safely implements and
- installs a single common, shared gestalt function and reports back values
- via the existing Gestalt mechanism. This gestalt function gets installed
- the first time the glue gets invoked. Subsequent calls to the glue
- (either from the same application, or a different one) cooperate with
- the gestalt function to maintain a table of selectors and values for the
- function to report.
-
- GestaltValue will eventually be implemented as a standard system trap, in
- which case, the glue will simply call the trap. Although currently provided
- as a standalone object file, GestaltValue will eventually be rolled into
- development libraries; watch for it in a development system near you.
-
- All three GestaltValue functions defined below can move memory, so they
- cannot be called at interrupt time. But the shared gestalt function that
- GestaltValue installs in the system heap is reentrant and does not move
- memory (i.e., it satisfies criteria (2) above), so any values registered
- via this mechanism can be safely retrieved at interrupt time via the
- standard Gestalt mechanism.
-
- Interface
-
- Pascal:
-
- FUNCTION NewGestaltValue(selector: OSType;newValue: LONGINT): OSErr;
- FUNCTION ReplaceGestaltValue(selector: OSType;replacementValue: LONGINT): OSErr;
- FUNCTION DeleteGestaltValue(selector: OSType): OSErr;
-
- C:
-
- pascal OSErr NewGestaltValue (OSType selector, long newValue);
- pascal OSErr ReplaceGestaltValue (OSType selector, long replacementValue);
- pascal OSErr DeleteGestaltValue (OSType selector);
-
- NewGestaltValue and ReplaceGestaltValue are analogous to NewGestalt and
- ReplaceGestalt. They take a standard 4 character OSType value and a new
- or replacement value. ReplaceGestaltValue has no parameter analogous
- to the oldGestaltFunction parameter of ReplaceGestalt. If you desire
- saving the previous value, you should call Gestalt for that selector
- before calling ReplaceGestaltValue.
-
- The usual restrictions on the selector parameter still apply. Apple
- recommends you use your four-character creator sequence for your selector.
- All lowercase letter and nonalphabetic ASCII sequences are reserved for Apple.
-
- DeleteGestaltValue makes a Gestalt value unknown to Gestalt. Subsequent
- calls to Gestalt for that selector will return gestaltUndefSelectorErr.
-
- Return values
-
- GestaltValue requires that the _Gestalt trap be implemented. You will get
- unimpErr (-4) if _Gestalt is unavailable.
-
- NewGestaltValue returns gestaltDupSelectorErr (-5552) if you attempt to add
- a new value for an existing selector. You should use ReplaceGestaltValue
- instead.
-
- ReplaceGestaltValue returns gestaltUndefSelectorErr (-5551) if you attempt
- to replace a non-existent selector. You should use NewGestaltValue instead.
-
- Both NewGestaltValue and ReplaceGestalt value may return memory errors if
- they cannot allocate sufficient room in the system heap for their code and
- data.
-
- DeleteGestaltValue returns gestaltUndefSelectorErr if you attempt to delete
- a selector unknown to GestaltValue (such as a pre-defined gestalt selector
- such as 'fpu ').
- - ----
- I hope this helps. Have fun,
-
- Dave Radcliffe
- Apple Computer
- MacDTS
-
- ---------------------------
-
- From: art@leis.base.bellcore.com (A. Zysk)
- Subject: One binary for all Macs (even 128K)
- Date: 29 Dec 92 20:13:04 GMT
- Organization: ZEI Software
-
- This is a two part question concerning the mant versions of
- MACS out there. I've divided the questions into an ENGINEERING
- section and a MARKETING section. Any response to any question
- is appreciated.
-
-
- ENGINEERING SECTION
- ===================
-
- Is there anyone else out there who is trying to keep
- thier applications *absolutely* portable to ALL Macs
- including the Original 1984 128K Mac?
-
- I am developing on higher powered Macs and cross testing on the
- 128K.
-
- As a second phase, I plan to obtain or develop a library of tools
- that selectivly enable or disable certain features either available
- or not available on a particular Mac.
-
- A good example is the pulldown menu. On 128K Macs, you can only
- append a limited number of menu items to a pulldown menu. This is because
- the auto scrolling feature is not available.
-
- I know that producing such a library will be very painful, but I anticipate
- the results will be well worth it. Do any comprehensive texts exist
- on this subject?
-
- MARKETING SECTION
- =================
-
- Given each type of Mac,
-
- How many units of each have been manufactured?
-
- By country, per type of MAC, how many units are still in use?
-
- What's the breakdown, in as much detail as possible, of
- what they are being used for.
-
- - - A. Zysk
- ZEI Software
- art@leis.base.bellcore.com
-
- +++++++++++++++++++++++++++
-
- Date: 29 Dec 92 23:49:25 GMT
- Organization: Royal Institute of Technology, Stockholm, Sweden
-
- In <1992Dec29.201304.14795@walter.bellcore.com> art@leis.base.bellcore.com (A. Zysk) writes:
-
- >This is a two part question concerning the mant versions of
- >MACS out there. I've divided the questions into an ENGINEERING
- >section and a MARKETING section. Any response to any question
- >is appreciated.
-
- If you're a developer, a lot of info is available from Apple
- regarding your questinos.
-
-
- >Is there anyone else out there who is trying to keep
- >thier applications *absolutely* portable to ALL Macs
- >including the Original 1984 128K Mac?
-
- Not me. Not Apple. Neither MPW nor Think C support the
- 64K ROM anymore. Also, the 68000 is fading out, but still
- hanging in there in the PowerBook 100s.
-
- >I know that producing such a library will be very painful, but I anticipate
- >the results will be well worth it. Do any comprehensive texts exist
- >on this subject?
-
- Worth it? What's your market? The 128K I know of is a fish tank;
- the 128K sold less than, say, Quadras sell today I think (I don't
- have any figures)
-
- There's just no point in supporting pre-plus pre-system-6
- machines today, and tomorrow that's gonna be pre-sys-7
- non-color machines.
-
-
- - --
- -- Jon W{tte, h+@nada.kth.se, Mac Hacker Deluxe --
-
- -- I don't fear death, it's dying that scares me.
-
- +++++++++++++++++++++++++++
-
- From: johnston@me.udel.edu (Bill Johnston)
- Date: 30 Dec 92 00:35:24 GMT
- Organization: University of Delaware
-
- In article <1992Dec29.234925.4623@kth.se> d88-jwa@hemul.nada.kth.se (Jon Wdtte) writes:
- >In <1992Dec29.201304.14795@walter.bellcore.com> art@leis.base.bellcore.com (A. Zysk) writes:
- >
- >>This is a two part question concerning the mant versions of
- >>MACS out there. I've divided the questions into an ENGINEERING
- >>section and a MARKETING section. Any response to any question
- >>is appreciated.
- >
- >>Is there anyone else out there who is trying to keep
- >>thier applications *absolutely* portable to ALL Macs
- >>including the Original 1984 128K Mac?
-
- The engineering side of the question is simple: yes, it's still
- possible to come up with a single binary that runs on Mac 128
- through Quadra 950 if one is willing to compromise on features.
-
- Engineering compromises aside, the appropriate question for the
- marketing side is not how many 128K Macs were sold, or even how
- many are still in use. I'd want to know how many of the owners
- of these machines are active software buyers, and I'd guess
- that the answer is "not very many". If the owners of these
- machines aren't interested enough in buying current software
- to buy hardware needed to run it, there isn't much point in
- spending effort to support them -- especially if it means
- compromising the product delivered to more likely customers.
- - --
- - -- Bill Johnston (johnston@me.udel.edu)
- - -- 38 Chambers Street; Newark, DE 19711; (302)368-1949
-
- +++++++++++++++++++++++++++
-
- From: bcoleman@hayes.com (Bill Coleman)
- Date: 30 Dec 92 15:22:56 GMT
- Organization: Hayes Microcomputer Products, Norcross, GA
-
- In article <1992Dec29.201304.14795@walter.bellcore.com>, art@leis.base.bellcore.com (A. Zysk) writes:
- >
- > ENGINEERING SECTION
- > ===================
- >
- > Is there anyone else out there who is trying to keep
- > thier applications *absolutely* portable to ALL Macs
- > including the Original 1984 128K Mac?
-
- Well, we kept Smartcom II running on 128K Macs for a while. About 5 years
- ago, we abandoned support for 128K Macs. We still kept support for 512K
- Macs, though. About 2 years ago, we pulled out support for the 512K Mac.
- We may still support the Mac XL (Lisa), but we haven't tested it.
-
- I would suggest that you don't put yourself out to support the 128K Mac.
-
- Apple estimated (3 years ago) that there are less than 50,000 128K / 512K
- Macs out there. (Most had been upgraded to a Plus) Of these, by now many
- have been put out of service. Of those still in use, few of these users are
- buying new applications.
-
- So, if your application happens to run on a 128K or 512K Mac, fine. If not,
- I wouldn't sweat it. Unless you have specific clients that need support for
- these Macs, It isn't worth it. You're better off spending your efforts
- in supporting the features of the newer system software.
-
- - --
- Bill Coleman, AA4LR ! CIS: 76067,2327 AppleLink: D1958
- Principal Software Engineer ! Packet Radio: AA4LR @ W4QO
- Hayes Microcomputer Products, Inc. ! UUCP: uunet!hayes!bcoleman
- POB 105203 Atlanta, GA 30348 USA ! Internet: bcoleman%hayes@uunet.uu.net
- Disclaimer: "My employer doesn't pay me to have opinions."
- Quote: "The same light shines on vineyards that makes deserts." -Steve Hackett.
-
- +++++++++++++++++++++++++++
-
- From: cole@alexia.lis.uiuc.edu (Sandra Stewart-Cole)
- Date: 3 Jan 93 19:30:01 GMT
- Organization: University of Illinois at Urbana
-
- The 128 and 512k are not worth supporting. As someone who actually wrote
- programs for them I am saddened in saying that, but the simple fact is that the
- total number of pre-plus Macs sold was small, and since there were Apple
- upgrades available to Plus status, 3rd-party upgrades to Plus status, and some
- really hazardously shoddy power supplies, ther are not too many of them left
- out there.
-
- I have seen twice in my 8-year history using the Mac a citation of exponential
- sales growth. The first was with the Plus, then with the price cut of '90. Both
- time the Mac press ended up drooling about Apple having sold as many units in a
- year as in all previous years. (I'm being vague because I can't remember the
- exact citations, but remember reading such stories) Given that a used Plus is
- a $300 investment, the pre-Plus market is by nature a cheapskate market. That
- makes it real tough to actually sell anything to them, and if you try to make
- software that can work on ANY Mac you will have to count on selling to people
- with modern macs and maybe having some 2nd-hand sales to people with old Macs.
- On the other hand, if you restrict yourself to using only that information in
- Inside Mac vI-vIII, and add harmless things like vers and SIZE resources for
- later Macs to use, it is a SIMPLE project. The only trouble is that you will
- have some pretty austere programs.
-
- ---------------------------
-
- From: hd12@ellis.uchicago.edu ()
- Subject: Advice needed
- Organization: computing
- Date: Sun, 13 Dec 1992 06:29:36 GMT
-
- A software company is trying to buy an application I wrote for Macintosh.
- Since I don't have this kind of experience before, I would appreciate if
- experienced people on the net can give me some good advice:
-
- 1. Usually what's the percentage the software author can get from the
- company's profit? Any estimation in terms of dollar? (assuming say, $70
- each copy.)
-
- 2. If the company offer fixed percentage of their profit, how am I supposed
- to make sure they will keep their promise, since I don't have access to
- their balance sheet?
-
- 3. Do I need a lawyer to make it legally binding?
-
- 4. Any tips? Precautions? Suggestions?
-
- All helps and suggestions will be very appreciated.
-
-
-
- +++++++++++++++++++++++++++
-
- From: werner@dewey.soe.berkeley.edu (John Werner)
- Date: 13 Dec 92 08:30:37 GMT
- Organization: School of Education, U.C. Berkeley
-
- In article <1992Dec13.062936.26772@midway.uchicago.edu> hd12@midway.uchicago.edu writes:
-
- >1. Usually what's the percentage the software author can get from the
- >company's profit? Any estimation in terms of dollar? (assuming say, $70
- >each copy.)
-
- Don't agree to a percentage of the "profit", whatever that means. Ask
- for a percentge of the gross, i.e. you get a percentage of every
- dollar of revenue they get on your program, regardless of their
- expenses to produce it. This way you don't have to worry quite as
- much about them fudging their costs to make the profit look lower. On
- one educational program I wrote, I and the other authors get 15% of
- the gross. We also got a decent advance. In hindsight, we might have
- been able to get more.
-
- >2. If the company offer fixed percentage of their profit, how am I supposed
- >to make sure they will keep their promise, since I don't have access to
- >their balance sheet?
-
- See #1. If you get a cut of the revenues instead of the profits, you
- just need to see the sales reports, not the balance sheet. The
- contract should say that you get to see some sort of sales report, and
- should say how often. I think we get one every 6 months.
-
- >3. Do I need a lawyer to make it legally binding?
-
- You need a good, tightly-worded contract to make it legally binding.
- Unfortunately, you this usually means you need a lawyer. On the
- program I wrote, we negotiated our own contract, starting with the
- pre-canned one the publisher tried to get us to sign and combined with
- lots of advice from our lawyer. We had him look over a few drafts and
- the final contract before we signed it. I think we ended up paying
- him about $500. This was in Chicago; I can probably find his
- name/number if you want them.
-
- >4. Any tips? Precautions? Suggestions?
-
- Make sure you have a valid, registered copyright on the program.
- Don't just put a copyright on it, send in the forms to the copyright
- office too.
-
- Try to have the contract say that you retain copyright in the program;
- it gives you more control and rights, and a better legal position if
- you ever end up in court. If they insist on getting the copyright, be
- aware that you're giving something up, and try to get something from
- them in return.
-
- Depending on how commercial the program is, you might want to try to
- get some sort of promise that they will put a certain amount of effort
- into marketing/advertising or the rights revert to you. This would be
- hard to get, but might be something to negotiate away.
- - --
- John Werner werner@soe.berkeley.edu
- UC Berkeley School of Education 510-642-9651
-
- +++++++++++++++++++++++++++
-
- From: oster@well.sf.ca.us (David Phillip Oster)
- Date: 14 Dec 92 08:39:07 GMT
- Organization: Whole Earth 'Lectronic Link
-
- In article <1992Dec13.062936.26772@midway.uchicago.edu> hd12@midway.uchicago.edu writes:
- >A software company is trying to buy an application I wrote for Macintosh.
- >Since I don't have this kind of experience before, I would appreciate if
- >experienced people on the net can give me some good advice:
-
- >1. Usually what's the percentage the software author can get from the
- >company's profit? Any estimation in terms of dollar? (assuming say, $70
- >each copy.)
- Whatever you can negotiate. IIt has been reported in the trade press that
- the author of the Atari version of Frogger made $0.75Million. It has been
- reported that Randy Wigginton got $1. for each copy of MacWrite given away
- with new macintoshes for the first 1 million macs. (Not bad for 6 months
- work.)
-
- >2. If the company offer fixed percentage of their profit, how am I supposed
- >to make sure they will keep their promise, since I don't have access to
- >their balance sheet?
- Many contracts specify that you get periodic access to their balance sheets,
- say once a year. What does "profit" mean here? Are their own salaries
- included? Do they subcontract production of the boxes to a production
- house that is, say, owned by a parent of the publisher, so the cost of
- production always equals income, (i.e, the "profit" is siphoned out of
- the publisher to the printer, leaving you with a piece of nothing.)?
- It has been reported that movie studios do this trick a lot.
-
- >3. Do I need a lawyer to make it legally binding?
- No, a contract does not _require_ a lawyer to be legally binding, but a
- lawyer is trained to point out spots that another lawyer can use to cause
- you trouble. (This process of "sticking an oar in" itself causes trouble
- and slows the negotiations down.) See the next point.
-
- >4. Any tips? Precautions? Suggestions?
- No Lo press, Parker St., Berkeley CA, publishes a number of good self help
- books on selling software, including selling to a publisher for royalties.
- Get them. Read them.
-
- "Getting to yes" and its sequels are good books on the art of negotiation,
- and there are many good books on how to sell. In the real world, what you
- get is what you get and everything is negotiable, although other parties
- often point to a printed sheet of rules as a means of making you think you
- can't negotiate.
- Remember that you can always hire a trained negotiator, but the better he
- is, the better he will be at negotiating his deal with _you_, so there is
- a point of diminishing returns.
-
- Remember subsidiary rights, like what happens if the publisher wants a
- version on another computer.
-
- Think of it as you hiring a "publisher" to produce, distribute, and
- market your work. How much is that worth?
-
- I've been doing this for a living, but I sure don't know it all.
- Anyone else have advice?
-
- +++++++++++++++++++++++++++
-
- From: gaillard@panix.com (Ed Gaillard)
- Date: 14 Dec 92 00:44:17 GMT
- Organization: PANIX Public Access Unix, NYC
-
- In <1992Dec13.062936.26772@midway.uchicago.edu>
- hd12@ellis.uchicago.edu (A Man With No Name) writes:
-
- >A software company is trying to buy an application I wrote for Macintosh.
- >Since I don't have this kind of experience before, I would appreciate if
- >experienced people on the net can give me some good advice:
-
- [...]
-
- >2. If the company offer fixed percentage of their profit, how am I supposed
- >to make sure they will keep their promise, since I don't have access to
- >their balance sheet?
-
- Your contract should specify how this is to be audited. BTW, if you
- agree to a fixed royalty per copy (or a percentage of the sales,
- rather than the profit), you will still have the problem of
- verifying the sales figures and pricing.
-
- >3. Do I need a lawyer to make it legally binding?
-
- Oh, yes. Definitely. You _need_ a lawyer. A little time and money
- spect on a lawyer up-front, while negotiating your contract, will save
- you a _lot_ of unpleasantness later.
-
- >4. Any tips? Precautions? Suggestions?
-
- One thing to be careful of is, if your program controls special
- hardware that this company makes or sells, you must be protected from
- their selling the harware and _giving away_ your program.
-
- >All helps and suggestions will be very appreciated.
-
- Disclaimer: I'm _not_ a lawyer, just someone who has had a bad
- experience with this kind of thing. Get a lawyer, most preferably one
- with experience in software royalty agreements.
-
- - --
- Ed Gaillard <gaillard@panix.com>
- I can't see the lines I used to think I could read between.
-
- +++++++++++++++++++++++++++
-
- From: kdlee@umn-cs.cs.umn.edu (Kevin D. Lee)
- Date: 14 Dec 92 14:32:32 GMT
- Organization: University of Minnesota, Minneapolis, CSci dept.
-
- In article <1992Dec13.062936.26772@midway.uchicago.edu> hd12@midway.uchicago.edu writes:
- >A software company is trying to buy an application I wrote for Macintosh.
-
- Don't sell the copyright, just sell the marketing rights in return
- for a percentage of sales. One way to protect yourself is to require
- a yearly performance figure, if the software sales don't reach the
- minumum sales figure (i.e. generate enough roylaties) then at your
- option, all rights revert to you.
-
-
- >
- >1. Usually what's the percentage the software author can get from the
- >company's profit? Any estimation in terms of dollar? (assuming say, $70
- >each copy.)
- 10-20% seems to be the norm for roylaties. Make sure that the
- royalty is on net sales. By the way, roylaties are nice because
- you do not have to pay social security on roylaties.
-
- >
- >2. If the company offer fixed percentage of their profit, how am I supposed
- >to make sure they will keep their promise, since I don't have access to
- >their balance sheet?
- In you contract insist on the right to audit the books. They
- may require that it be done by a CPA. Also insist that if
- the audit shows they made an error they pay for the audit.
-
- B
- >
- >3. Do I need a lawyer to make it legally binding?
- No, but you may feel more comfortable if you have a lawyer.
- Try to do as musch of the negotiating yourself and just
- use the lawyer as a refrence.
-
- B
- >
- >4. Any tips? Precautions? Suggestions?
- There are several books published about negotiating your
- own book contracts. There are enough similarities that
- it is worth your while to look at them.
- Good Luck!
- >
- >All helps and suggestions will be very appreciated.
- >
- >
-
- +++++++++++++++++++++++++++
-
- From: d88-jwa@hemul.nada.kth.se (Jon Wtte)
- Date: 14 Dec 92 16:23:29 GMT
- Organization: Royal Institute of Technology, Stockholm, Sweden
-
- In <1992Dec14.004417.22727@panix.com> gaillard@panix.com (Ed Gaillard) writes:
-
- >>2. If the company offer fixed percentage of their profit, how am I supposed
- >>to make sure they will keep their promise, since I don't have access to
- >>their balance sheet?
-
- >Your contract should specify how this is to be audited. BTW, if you
- >agree to a fixed royalty per copy (or a percentage of the sales,
- >rather than the profit), you will still have the problem of
- >verifying the sales figures and pricing.
-
- Let the contract specify that you DO have access to their
- bookkeeping. You have the program, right?
-
- >>3. Do I need a lawyer to make it legally binding?
-
- >Oh, yes. Definitely. You _need_ a lawyer. A little time and money
-
- And a standard contract shouldn't take more than say 10 hours
- for an experienced lawyer. Add the cost of the contract as a
- lump sum for the program. (If they don't want to pay, they
- shouldn't have the program)
-
- >>4. Any tips? Precautions? Suggestions?
-
- Yes. Don't go for a percentage, go for a fixed rate. Say $3
- or whatever per sold copy (plus the cost of a good contract
- initially, of course) Better yet, figure out how much time
- you have spent on the program, multiply by your hourly rate
- (say $50 for a cheap programmer, $100 for a decent one) and
- just seel off the source. If they want support, they pay for
- it later.
-
- That goes even if you sell it per copy; if they want support
- or changes, THEY PAY BY THE HOUR. Be a little tough; either
- they want the program and you should be rewarded, or the
- program is insignificant, and then you didn't lose much anyway.
-
- Oh, and be sure to make the contract say THEY assume full responsibility
- for any demands or suits caused by them selling the program. You
- just hand them the code (or duplicated disks, in case of a per-copy
- system) and make no warranty.
-
- Of course, I'm no lawyer, just a software designer who fortunately
- consulted with a (good) lawyer before signing anything.
-
- Cheers,
-
- / h+
-
- - --
- -- Jon W{tte, h+@nada.kth.se, Mac Hacker Deluxe --
-
- This article printed on 100% recycled electrons.
-
- +++++++++++++++++++++++++++
-
- From: gaillard@panix.com (Ed Gaillard)
- Date: 16 Dec 92 03:54:20 GMT
- Organization: PANIX Public Access Unix, NYC
-
- In reply to my post, I received an Email from Sean J. Crist
- <kurisuto@chopin.udel.edu>, which follows:
-
- <begin forwarded mail>
-
- >>3. Do I need a lawyer to make it legally binding?
- >
- >Oh, yes. Definitely. You _need_ a lawyer. A little time and money
- >spect on a lawyer up-front, while negotiating your contract, will save
- >you a _lot_ of unpleasantness later.
-
- I've tried posting this but for some reason the server keeps rejecting it.
- So I'll just mail it to you; I'd like it if you could post it, since I
- don't seem to be able.
-
- An important point of clarification: A contract is legally binding as
- soon as it's signed, regardless of whether an attorney was consulted.
- What an attorney can do is point out parts of the contract which aren't
- legally enforceable, or parts which might have legal ramifications which
- you might not have anticipated. A contract scribbled on a cocktail napkin
- is binding, as long as all parties have signed it.
-
- So, do you need an attorney to make a contract legally binding? No. Is
- it a good idea to consult an attorney anyway? Yes.
-
- <end fowarded mail>
-
- Mr. Crist is absolutely right. I'm sorry for any confusion I might have
- caused. I saw "do I need a lawyer" and went off half-cocked. I meant
- "don't sign anything until you get a lawyer!"
-
- - --
- Ed Gaillard <gaillard@panix.com>
- I can't see the lines I used to think I could read between.
-
- ---------------------------
-
- End of C.S.M.P. Digest
- **********************
-